package com.clothing.controller.admin;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONArray;
import com.clothing.bean.ArticleTypeJson;
import com.clothing.controller.BaseController;
import com.clothing.entity.ArticleType;
import com.clothing.service.ArticleTypeService;
import com.clothing.utils.AjaxMsg;
import com.clothing.utils.Utils;

/**
 * @ClassName: ArticleTypeController 
 * @Description: TODO(文章类别) 
 * @author Charles.Tao 
 * @date 2017年9月7日 上午9:38:03 
 * @version 1.0
 */
@RequestMapping("/admin/article_type")
@Controller("adminArticleTypeController")
public class ArticleTypeController extends BaseController
{
    @Autowired
    private ArticleTypeService articleTypeService;
    
    /**
     * @Title: add 
     * @Description: TODO(添加文章类型) 
     * @param @param name
     * @param @return 设定文件 
     * @return String 返回类型 
     * @throws
     */
    @RequestMapping(value = "/add", method = RequestMethod.POST)
    @ResponseBody
    private String add(String name, Boolean isShow)
    {
        if (null == isShow || Utils.isEmpty(name))
        {
            return getParameterErrorMsg();
        }
        
        ArticleType articleType = new ArticleType();
        articleType.setName(name);
        articleType.setIsShow(isShow);
        articleType.setOrder(Integer.MAX_VALUE);
        articleTypeService.save(articleType);
        
        return AjaxMsg.success("添加成功");
    }
    
    /**
     * @Title: update 
     * @Description: TODO(修改文章名称) 
     * @param @param id
     * @param @param name
     * @param @return 设定文件 
     * @return String 返回类型  
     * @throws
     */
    @RequestMapping(value = "/rename", method = RequestMethod.POST)
    @ResponseBody
    public String rename(Long id, String name)
    {
        ArticleType articleType = articleTypeService.find(id);
        
        if (null == articleType)
        {
            return getParameterErrorMsg();
        }
        
        if (Utils.isEmpty(name))
        {
            return getParameterErrorMsg();
        }
        
        articleType.setName(name);
        articleTypeService.update(articleType);
        
        return AjaxMsg.success("操作成功");
    }
    
    /**
     * @Title: update 
     * @Description: TODO(启用/停用文章) 
     * @param @param id
     * @param @param isShow
     * @param @return 设定文件 
     * @return String 返回类型  
     * @throws
     */
    @RequestMapping(value = "/toggle", method = RequestMethod.POST)
    @ResponseBody
    public String toggle(Long id, Boolean isShow)
    {
        ArticleType articleType = articleTypeService.find(id);
        
        if (null == articleType)
        {
            return getParameterErrorMsg();
        }
        
        if (null == isShow)
        {
            return getParameterErrorMsg();
        }
        
        articleType.setIsShow(isShow);
        articleTypeService.update(articleType);
        
        return AjaxMsg.success("操作成功");
    }
    
    /**
     * @Title: list 
     * @Description: TODO(列表) 
     * @param @return 设定文件 
     * @return String 返回类型 
     * @throws
     */
    @RequestMapping(value = "/getList.json", method = RequestMethod.GET)
    @ResponseBody
    public String list()
    {
        List<ArticleType> articleTypes = articleTypeService.findAll();
        JSONArray ja = null;

        if (!Utils.isEmpty(articleTypes))
        {
            ja = new JSONArray();
            
            for (ArticleType articleType : articleTypes)
            {
                ArticleTypeJson json = new ArticleTypeJson();
                json.setId(articleType.getId());
                json.setName(articleType.getName());
                json.setIsShow(articleType.getIsShow());
                json.setOrder(articleType.getOrder());
                ja.add(json);
            }
        }
        
        return new AjaxMsg(true, ja).toString();
    }
    
    /**
     * @Title: detail 
     * @Description: TODO(详情) 
     * @param @param id
     * @param @return 设定文件 
     * @return String 返回类型 
     * @throws
     */
    @RequestMapping(value = "/getDetail.json", method = RequestMethod.GET)
    @ResponseBody
    public String detail(Long id)
    {
        ArticleType articleType = articleTypeService.find(id);
        
        if (null == articleType)
        {
            return getParameterErrorMsg();
        }
        
        ArticleTypeJson json = new ArticleTypeJson();
        json.setId(articleType.getId());
        json.setName(articleType.getName());
        json.setIsShow(articleType.getIsShow());
        
        return new AjaxMsg(true, json).toString();
    }
    
    /**
     * @Title: order 
     * @Description: TODO(排序) 
     * @param @param id
     * @param @param order
     * @param @return 设定文件 
     * @return String 返回类型  
     * @throws
     */
    @RequestMapping(value = "/order", method = RequestMethod.POST)
    @ResponseBody
    public String order(Long id, Integer order)
    {
        ArticleType articleType = articleTypeService.find(id);
        
        if (null == articleType || null == order)
        {
            return getParameterErrorMsg();
        }
        
        articleType.setOrder(order);
        articleTypeService.update(articleType);
        
        return AjaxMsg.success();
    }
}
